public class Person1 implements Comparable {
  private Name name;
  private Address address;

  /** Construct a person with default properties */
  public Person1() {
    this(new Name("Jill", 'S', "Barr"),
      new Address("100 Main", "Savannah", "GA", "31411"));
  }

  /** Construct a person with specified name and address */
  public Person1(Name name, Address address) {
    this.name = name;
    this.address = address;
  }

  /** Return name */
  public Name getName() {
    return name;
  }

  /** Set a new name */
  public void setName(Name name) {
    this.name = name;
  }

  /** Return address */
  public Address getAddress() {
    return address;
  }

  /** Set a new address */
  public void setAddress(Address address) {
    this.address = address;
  }

  /** Override the toString method */
  public String toString() {
    return '\n' + name.getFullName() + '\n' +
      address.getFullAddress() + '\n';
  }

  /** Implement compareTo in the Comparable interface */
  public int compareTo(Object o) {
    return name.compareTo(((Person1)o).name);
  }
}
